# 1. 定义类：私有类属性，类方法获取这个私有类属性
"""
类方法是类对象所拥有的⽅法，需要⽤修饰器 @classmethod 来标识其为类⽅
法，对于类⽅法，第⼀个参数必须是类对象，⼀般以 cls 作为第⼀个参
数（当然可以⽤其他名称的变量作为其第⼀个参数，但是⼤部分⼈都习惯
以'cls'作为第⼀个参数的名字，就最好⽤'cls'了），能够通过实例对象和类
对象去访问。
"""


class Dog(object):
    __tooth = 10

    # 定义类方法
    @classmethod
    def get_tooth(cls):
        return cls.__tooth


# 2. 创建对象，调用类方法
wangcai = Dog()
result = wangcai.get_tooth()
print(result)


# 类⽅法还有⼀个⽤途就是可以对类属性进⾏修改：

class People(object):
    country = 'china'

    # 类⽅法，⽤classmethod来进⾏修饰
    @classmethod
    def get_country(cls):
        return cls.country

    @classmethod
    def set_country(cls, country):
        cls.country = country


p = People()
print(p.get_country())  # 可以⽤过实例对象访问
print(People.get_country())  # 可以通过类访问
p.set_country('japan')
print(p.get_country())
print(People.get_country())
print(p.country)
